/*
 * FileHandler.cpp
 *
 */

#include "FileHandler.h"
#include "BPlussIStructureFactory.h"
FileHandler::FileHandler() {

	init();
}

FileHandler::~FileHandler() {

}

IndexadorTwit* FileHandler::getIndexadorTwit() {
	return this->indexadorTwit;
}

IndexadorRss* FileHandler::getIndexadorRss() {
	return this->indexadorRss;
}

HashExtensible* FileHandler::getHash() {
	return this->hash;
}

HashExtensibleRss* FileHandler::getHashRss() {
	return this->hashRss;
}

IStrutureBTreeImpl* FileHandler::getTituloIdRss() {
	return this->iTituloIDRss;
}

IStrutureBTreeImpl* FileHandler::getAutorIdTwit() {
	return this->iAutorIDTwit;
}

IStrutureBTreeImpl* FileHandler::getFechaAscIdRss() {
	return this->iFechaAscIDRss;
}

IStrutureBTreeImpl* FileHandler::getFechaAscIdTwit() {
	return this->iFechaAscIDTwit;
}

IStrutureBTreeImpl* FileHandler::getFechaDesIdTwit() {
	return this->iFechaAscIDTwit;
}

IStrutureBTreeImpl* FileHandler::getFechaDesRss() {
	return this->iFechaDesRss;
}

void FileHandler::init() {

	this->hash = new HashExtensible();
	this->hashRss = new HashExtensibleRss();



	this->iFechaAscIDRss = BPlussIStructureFactory::createIStrcutre(
			FECHAASC_IDRSS);
	this->iTituloIDRss = BPlussIStructureFactory::createIndexIStructure(
			TITULO_IDRSS);
	this->iFechaDesRss = BPlussIStructureFactory::createIStrcutre(
			FECHADES_IDRSS);

	this->iFechaAscIDTwit = BPlussIStructureFactory::createIStrcutre(
			FECHAASC_IDTWEET);
	this->iAutorIDTwit = BPlussIStructureFactory::createIndexIStructure(
			AUTOR_IDTWEET);

	this->iFechaDesIDTwit = BPlussIStructureFactory::createIndexIStructure(
			FECHADES_IDTWEET);

	this->indexadorRss = new IndexadorRss(this->hashRss, this->iFechaAscIDRss,this->iFechaDesRss,
			this->iTituloIDRss);

	this->indexadorTwit=new IndexadorTwit(this->hash,this->iFechaAscIDTwit,this->iFechaDesIDTwit,this->iAutorIDTwit);

}

//deleteamos todos para forzar que se guarden los archivos.
//TODO hacer un close para los istructre
void FileHandler::close() {

	//No hacer los drops porque se borran las estructuras
	delete iFechaAscIDRss;
	delete iFechaDesIDTwit;
	delete iTituloIDRss;
	delete iAutorIDTwit;

	delete iFechaAscIDTwit;
	delete iFechaDesIDTwit;

	delete this->hash;
	delete this->hashRss;

	delete this->indexadorRss;
	delete this->indexadorTwit;
}
